package com.ibeeking.gmc.global.g.rest.service;

import com.ibeeking.found.common.enums.marketing.CampaignSceneTypeEnum;
import com.ibeeking.gmc.global.api.common.dto.CampaignSceneDTO;
import com.ibeeking.gmc.global.service.common.bo.CampaignSceneBO;
import com.ibeeking.gmc.global.service.common.param.CampaignSceneParam;
import com.ibeeking.gmc.global.service.common.query.CampaignScenePageQuery;
import com.ibeeking.gmc.global.service.common.vo.CampaignSceneTypeVO;
import com.ibeeking.gmc.global.service.common.vo.CampaignSceneVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;

/**
 * @ClassName ICampaignSceneService
 * @Description
 * @Author ibeeking
 * @Date 2021-07-08 9:14
 **/
public interface ICampaignSceneService {

    /**
     * 场景分页
     *
     * @param query
     * @return
     */
    Page<CampaignSceneVO> pageList(CampaignScenePageQuery query);

    /**
     * 场景新增
     *
     * @param param
     * @return
     */
    Boolean add(CampaignSceneParam param);

    /**
     * 场景修改
     *
     * @param param
     * @return
     */
    Boolean modify(CampaignSceneParam param);

    /**
     * 查看
     *
     * @param id
     * @return
     */
    CampaignSceneVO view(Long id);

    CampaignSceneBO queryById(Long id);

    /**
     * 删除
     *
     * @param id
     * @return
     */
    Boolean del(Long id);

    /**
     * 活动场景类型列表
     *
     * @return
     */
    List<CampaignSceneTypeVO> sceneTypes();

    /**
     * 查询类型列表
     *
     * @param campaignSceneType
     * @return
     */
    List<CampaignSceneBO> selectBySceneByType(CampaignSceneTypeEnum campaignSceneType);

    /**
     * 根据场景编码查询场景信息
     *
     * @param codes
     * @return
     */
    List<CampaignSceneDTO> queryCampaignSceneByCode(List<String> codes);
}
